package com.csesteel.common.dao;

import java.io.Serializable;
import java.util.List;

/**
 * Created by Administrator on 2015/4/21 0021.
 */
public interface BaseDao<T>
{
    // 根据ID加载实体
    T get(Class<T> entityClazz, Serializable id);
    // 保存实体
    Serializable save(T entity);
    // 更新实体
    void update(T entity);
    // 删除实体
    void delete(T entity);
    // 根据ID删除实体
    void delete(Class<T> entityClazz, Serializable id);
    // 获取所有实体
    List<T> findAll(Class<T> entityClazz);
    // 获取实体总数
    long findCount(Class<T> entityClazz);
    //根据sql语句查询

    List<T> findByPage(String hql,
                                 int pageNo, int pageSize);
    List<T> findByPage(String hql , int pageNo, int pageSize
            , Object... params);

    /**
     * 根据sql语句删除
     * @param sql
     */
    void deleteBySQL(String sql);

    /**
     * 根据sql语句保存或者更新
     * @param sql
     */
    void saveWithSql(String sql);

    void operateSQLWithParams(String sql,Object... params);
}
